맨위로가기

모토로라 68000

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

모토로라 68000(MC68000)은 1979년 출시된 모토로라의 16/32비트 마이크로프로세서로, 32비트 아키텍처를 기반으로 설계되었다. 68000은 유닉스 워크스테이션, 초기 개인용 컴퓨터, 레이저 프린터 등 다양한 분야에서 사용되었으며, 68010, 68012, 68008, 68HC000과 같은 파생 제품이 출시되었다. 특히 68EC000은 임베디드 컨트롤러용으로 설계되었으며, 오디오 기기, 게임 콘솔, 프린터 등에 널리 사용되었다. 68000은 여러 세컨드 소스 제조사에서 생산되었으며, 대한민국에서는 삼성 SPC-3000 등에서 사용되었다.

더 읽어볼만한 페이지

  • 1979년 도입된 제품 - 콤팩트 디스크
    콤팩트 디스크(CD)는 1982년 소니와 필립스에 의해 상용화된 광학 디스크로, 오디오 및 데이터를 저장하며, 다양한 규격과 형태로 활용되었으나 디지털 음원 서비스의 확산으로 판매량이 감소했다.
  • 1979년 도입된 제품 - 해피밀
    해피밀은 맥도날드에서 어린이들을 위해 판매하는 세트 메뉴로, 햄버거 또는 치킨 맥너겟과 같은 메인 메뉴, 사이드 메뉴, 음료와 더불어 어린이들의 수집 욕구를 자극하는 장난감으로 구성되어 다양한 어린이 영화나 TV 시리즈를 테마로 제작되기도 하며, 건강상의 이유로 메뉴 구성에 변화가 있기도 하다.
  • 68k 마이크로프로세서 - 모토로라 68000 시리즈
    모토로라 68000 시리즈는 1979년 출시된 16/32비트 마이크로프로세서 제품군으로, 데스크톱 컴퓨터, 워크스테이션, 게임 콘솔 등 다양한 시스템에 사용되었으며, 직교적인 명령어 집합, 다양한 주소 지정 방식, 슈퍼바이저 모드 등의 특징을 갖추고 성능과 기능이 개선되었다.
  • 68k 마이크로프로세서 - 모토로라 68008
    모토로라 68008은 8MHz 또는 10MHz로 작동하며, 최대 4MB의 메모리를 지원하는 8비트 데이터 버스와 20 또는 22비트 주소 버스를 갖춘 HMOS 프로세서이다.
  • 32비트 마이크로프로세서 - 인텔 80386
    인텔 80386은 1985년 출시된 x86 아키텍처의 32비트 마이크로프로세서로, 온칩 메모리 관리 장치, 3단계 파이프라인, 세 가지 동작 모드를 제공하며, 개인용 컴퓨터와 임베디드 시스템에 널리 사용되었지만 현재는 생산 및 지원이 중단되었고, 32비트 명령어 집합은 현대 x86 아키텍처의 기반이 되었다.
  • 32비트 마이크로프로세서 - 슈퍼H
    슈퍼H는 히타치에서 개발한 RISC 기반 CPU 코어 제품군으로, 상위 호환성을 갖는 명령어 집합과 높은 코드 밀도를 특징으로 하며, 다양한 모델이 개발되어 여러 기기에 탑재되었으나, ARM 아키텍처의 부상으로 개발이 중단된 후 르네사스 일렉트로닉스를 통해 라이선스가 제공되고 SH-2 특허 만료 후에는 오픈 소스 구현 프로젝트가 진행되었다.
모토로라 68000
프로세서 개요
MC68000P10
MC68000P10
명칭MC68000
설계 회사모토로라
생산 시작1979년
생산 종료1996년 6월 1일
아키텍처모토로라 68000 시리즈
데이터 너비16비트
주소 너비24비트
패키지64핀 DIP
트랜지스터 수68,000개
후속작모토로라 68010
최저 클럭 속도4 MHz
최고 클럭 속도16.67 MHz
아키텍처 세부 정보
설계자모토로라
비트 수16/32비트
출시일1979년
설계 방식CISC
엔디언빅 엔디언
범용 레지스터8× 32비트 데이터 레지스터 + 7 주소 레지스터 (대부분의 연산 + 스택 포인터에도 사용 가능)
추가 정보
디자인 철학모토롤라 MC68000의 설계 철학
관련 문서Motorola M68000 제품군 프로그래머 참조 설명서 (1992)
관련 링크MC68000: 저가형 32비트 마이크로프로세서 (HC000, HC001, EC000 및 SEC000 포함) - NXP
68K 향수에 젖어 40년 된 컴퓨터를 새로 만들어보시겠습니까? - Electronic Engineering Journal (2020-08-10)

2. 역사

68000은 1976년 MACSS(Motorola Advanced Computer System on Silicon) 프로젝트에서 시작되어, 기존의 6800과의 호환성을 고려하지 않고 완전히 새로운 아키텍처로 개발되었다. 그 결과 6800의 주변 장치들을 사용하기 위한 버스 프로토콜 호환 모드만이 남게 되었다.[12][11] 설계자들은 32비트 명령어 아키텍처에 중점을 두었는데, CPU 레지스터가 32비트로 구성되어있는 것이 그 증거이다. MACSS 팀은 PDP-11과 VAX 시스템같은 미니컴퓨터 프로세서의 설계에 영향을 받아 비슷한 구조로 설계하게 되었다.

1960년대 중반 8비트 프로세서 제조사들은 16비트 제품을 개발하느라 경쟁하고 있었다. 내셔널 세미컨덕터는 1973-1975년 IMP-16PACE 프로세서를 개발하였지만 성능에 문제가 있었는데, 1977년 8086이 출시되어 인기를 얻었다. 모토로라는 16비트 경쟁에서 뒤쳐진 것을 만회하기 위해, 더 많은 트랜지스터 집적과 32비트 매크로 명령어를 도입했다.

오리지널 MC68000은 HMOS 3.5µm 공정으로 제조되었는데, 초기 엔지니어링 샘플은 1979년 말 출시되었으며 1980년 양산되기 시작하여 초기 제품의 속도는 4, 6, 8MHz였다. 1981년 10 MHz, 1982년 12.5 MHz 제품이 출시되었으며 오리지널 HMOS 칩 중 가장 빠른 16.67 MHz "12F" 버전은 1980년대 말까지 출시되지 못했다.

68000은 고성능 설계로 썬 워크스테이션과 아폴로/도메인 워크스테이션을 포함한 유닉스 계열 워크스테이션의 주요 CPU로 사용되었다. 또한 아미가, 아타리 ST, 리사와 매킨토시같은 초창기 컴퓨터에서도 찾아볼 수 있으며, 애플 레이저라이터(LaserWriter) 데스크톱 레이저 프린터에도 사용되었다.

1982년에는 가상 메모리 지원을 포함해 Popek과 Goldberg 가상화를 추가한 68010을 출시하였으며, 32비트 어드레스 버스를 가진 더 확장된 버전의 68012도 출시하였다. 또한 저가형으로 8비트 데이터 버스와 20비트 어드레스 버스를 가진 68008도 출시하였다. 1982년 이후 모토로라는 68020과 88000 개발에 힘을 기울였다.

모토로라 MC68000 (무연 칩 캐리어(CLCC) 패키지)


모토로라 MC68000 (플라스틱 리드 칩 캐리어(PLCC) 패키지)


1985년, CMOS 버전인 68HC000이 히타치와 공동으로 출시되었다.

2. 1. 세컨드 소스

히타치(HD68000), 모스텍(MK68000), 락웰(R68000), 시그네틱스(SCN68000), 톰슨/SGS-톰슨(EF68000, 나중에 TS68000로 변경), 도시바(TMP68000) 같은 여러 회사들이 HMOS 68000을 세컨드 소스로 제조하였다. 도시바는 CMOS 68HC000 (TMP68HC000)의 세컨드 소스 제조사이기도 하다.

히타치(Hitachi) HD68000


Thomson TS68000


히타치는 12.5MHz 버전의 68000을 위해 특징 크기를 2.7μm로 줄였다. 히타치 FD1089와 FD1094는 68000의 암호화된 변형으로, 배터리 백업 메모리에 op코드와 op코드 데이터에 대한 복호화 키를 저장하며, 시스템 16을 포함한 특정 세가 아케이드 시스템에서 해적 행위와 불법 부트렉 게임을 방지하는 데 사용되었다.

2. 2. CMOS 버전

68HC000은 68000의 CMOS 버전으로 히타치가 설계하여 1985년에 공동으로 출시되었다.[59][20] 모토로라 버전은 MC68HC000, 히타치는 HD68HC000로 표기했다. 68HC000은 8 ~ 20 MHz 속도로 출시되었으며 CMOS 회로를 사용했음에도 HMOS MC68000과 동일했지만 소모 전력은 크게 줄어들었다. 오리지널 HMOS MC68000은 25°C의 온도에서 사용시 클럭 속도에 상관없이 1.35와트의 전력을 소비하는 반면 MC68HC000는 8 MHz 제품은 0.13와트, 20 MHz 제품은 0.38와트의 전력만을 소비한다. HMOS는 아이들시에도 전류가 흐르기 때문에 클럭 속도에 따라 전력 소모의 차이가 적다.[20] 애플은 매킨토시 포터블에 68HC000을 사용하기로 선택했다.

Motorola MC68HC000LC8


모토로라는 1990년 MC68008을 MC68HC001로 교체하였다.[21] 이 칩은 68HC000과 대부분 비슷한데 리셋시 데이터 버스 핀에 입력되는 신호에 따라 데이터 버스가 16비트나 8비트 모드로 동작한다. 그래서 68008과 같이 값 싼 8비트 메모리를 사용할 수 있다.

1996년 모토로라는 완전한 스태틱 회로로 저전력 모드에서 0.5 µW의 전력만 소비하는 MC68SEC000을 출시하였다.[61][23]

1996년 모토로라는 HMOS MC68000와 MC68008의 생산을 멈추었지만,[62] 모토로라에서 분리된 프리스케일 세미컨덕터에서 MC68HC000과 MC68HC001, MC68EC000, MC68SEC000을 비롯해 MC68302와 MC68306 마이크로컨트롤러, 드래곤볼 시리즈를 판매하고 있으며 68000 아키텍처의 후계로 680x0, CPU32, 콜드파이어 또한 판매하고 있다.[26]

2. 3. 마이크로컨트롤러 코어

68000은 32비트 마이크로프로세서로서 성공한 이후 많은 마이크로컨트롤러 코어로도 사용되었다.[63][27] 1989년 모토로라는 MC68302 통신 프로세서를 출시하였다.[63][27]

MC68302는 68EC000 코어에 SCC, DMA, 타이머 등을 탑재하여 ISDN 등의 통신 기기에 사용되었다. 또한, MC68328 (드래곤볼)은 68EC000 코어에 LCD 컨트롤러, UART, SPI, PWM, 타이머, RTC 등을 탑재하여 팜 (PDA)에 사용되었다.

모토로라 CPU32 계열 마이크로컨트롤러에는 MC68330, MC68331, MC68332, MC68340, MC68341, MC68356, MC68360 (QUICC) 등이 있다. MC68332는 CPU32 코어에 TPU, QSM, SIM을 탑재한 고기능 타이머/카운터이다. MC68360 (QUICC)는 CPU32+ 코어에 CPM, DMA, 타이머 등을 탑재하였다.

ColdFire는 M68K 시리즈에서 파생된 RISC 프로세서로, 명령 집합은 68000에서 일부 삭제되어 소스 코드 레벨에서 서브셋이 되었다. ColdFire 제품군에는 MCF52xx (ColdFire V2), MCF53xx (ColdFire V3), MCF54xx (ColdFire V4/V4e) 등이 있다.

3. 아키텍처

모토로라 68000은 32비트 범용 데이터 레지스터 8개(D0-D7)와 어드레스 레지스터 8개(A0-A7)를 갖추고 있다. A7 어드레스 레지스터는 스택 포인터로도 사용된다. 데이터와 어드레스 레지스터를 나눔으로써 설계자들이 더 높은 수준으로 어드레스 레지스터 보조 실행 유닛의 병렬화를 설계하는데 기여했다. 68000 시리즈의 정수 표시는 빅엔디언 방식을 사용한다.

내부 레지스터에는 8개의 범용 데이터 레지스터 (D0 - D7)와 8개의 어드레스 레지스터 (A0 - A7)가 있다. 어드레스 레지스터 (A7)는 스택 포인터 (SP)로 사용되어 스택 상위 객체에 접근하기 용이하다.

3. 1. 어드레스 버스

모토로라 68000(68000)은 24비트 외부 주소 버스를 가지고 있으며, A0 핀을 대체하는 두 개의 바이트 선택 신호를 가지고 있다.[4] 따라서 24개의 라인으로 바이트 단위로 16MB의 물리적 메모리를 주소 지정할 수 있다.[4] 주소 저장 및 계산은 내부적으로 32비트를 사용하지만, 장치 핀 부족으로 상위 8비트 주소는 무시된다.[4] 이를 통해 32비트 주소 공간에 대해 작성된 소프트웨어를 실행하면서 24비트 물리 주소 공간에만 접근할 수 있다.[4] 모토로라가 내부 32비트 주소 공간을 의도한 것은 상위 호환성을 위한 것으로, 68000 명령어 집합의 이후 32비트 구현을 최대한 활용하는 68000 소프트웨어를 작성하는 것이 가능하게 했다.[4]

하지만 일부 프로그래머는 상위 주소 바이트를 무시하거나 주소 지정 외의 다른 목적으로 사용하는 "24비트" 소프트웨어를 제작하여, 32비트 68000 구현에서 문제를 발생시켰다.[4] 예를 들어, 초기(7.0 이전) 버전의 Apple Mac OS는 메모리 블록 마스터 포인터의 상위 바이트를 ''잠금'' 및 ''삭제 가능''과 같은 플래그를 보관하는 데 사용했다.[4] 이후 OS 버전은 플래그를 인근 위치로 옮겼고, 애플은 1989년 Mac IIci 출시를 시작으로 "32비트 클린" ROM을 가진 컴퓨터를 출시했다.[4]

68000 제품군은 여러 바이트 정수를 빅 엔디안 순서로 메모리에 저장한다. MC68000은 유효 주소 연산을 위해 전용의 두 개의 16비트 ALU를 연결하여 사용하고, 세 번째 ALU가 16비트 연산을 수행했다.

68000에서는 사용되지 않는 상위 8비트에 정보를 넣는 기술이 일부 시스템 프로그램 등에서 사용되었다. 예를들어 포인터가 가리키는 객체의 종류를 구분하는 정보나 가비지 컬렉션용 플래그를 저장했다.[55] 이러한 코드는 후속 모델인 더 넓은 주소 버스를 가진 머신에서 실행하면 버스 에러가 발생했다.[55]

3. 2. 상태(Status) 레지스터

68000은 비교, 산술 연산과 논리 연산에서 그 결과를 상태 레지스터에 비트 플래그로 설정해 나중에 조건 분기에서 사용할 수 있다. 비트 플래그에는 eXtend, Negative, Zero, oVerflow, Carry 가 있다. 이중 eXtend 플래그는 다정밀도(Multiprecision)의 산술 연산과 논리, 시프트 연산에서 특별한 비트로 사용된다.

68000은 16비트 상태 레지스터를 가지고 있다. 상위 8비트는 시스템 바이트이며, 이를 수정하는 것은 특권 명령이다. 하위 8비트는 사용자 바이트이며, 조건 코드 레지스터(CCR)라고도 하며, 이를 수정하는 것은 특권 명령이 아니다. 68000의 비교, 산술 및 논리 연산은 후속 조건 분기에 사용하기 위해 결과를 기록하도록 조건 코드를 수정한다. 조건 코드 비트는 "캐리"(C), "오버플로"(V), "제로"(Z), "음수"(N) 및 "확장"(X)이다. "확장"(X) 플래그는 캐리 플래그와 별개이므로 특별히 언급할 가치가 있다. 이를 통해 산술, 논리 및 시프트 연산의 추가 비트를 캐리 다중 정밀 산술에서 분리할 수 있다.

eXtend와 Carry는 시프트/산술 연산/논리 연산 명령의 자리 올림 결과를 보존하지만, eXtend 비트는 더 많은 바이트 연산을 실현하기 위해 사용하고, Carry 비트는 처리 흐름을 제어하는 데 사용한다.

3. 3. 명령어 셋

설계자들은 어셈블리어가 직교성을 가지도록 시도하였다. 명령어는 오퍼랜드와 어드레싱 모드로 구별되며 대부분의 어드레스 모드는 모든 명령어를 사용할 수 있다. 비트 레벨에서 어셈블러로 작성된 명령어가 어떤 오프코드(op-code)로 변환되는지 명확히 알 수 있는데 이것은 직교성 있는 머신으로의 편의성과 CPU 설계자들이 오프코드 표를 자유롭게 작성하는데 좋은 타협점이 되었다.

56개의 명령어만이 최소 크기의 명령어로 당시에는 거대한 16비트 크기였다. 많은 명령어와 어드레스 모드에는 어드레스와 어드레스 모드 비트 등을 담은 여분의 워드(word)를 추가로 사용한다. 많은 설계자들은 MC68000 아키텍처가 비용에 걸맞은 컴팩트한 코드를 생성한다고 믿고 있었는데(특히 컴파일러로 코드를 생성할 경우) 이 컴팩트한 코드에 대한 믿음은 아키텍처가 널리 오랫동안 사용하게 되는데 도움이 되었다. 이러한 믿음 혹은 특징은 ARM 아키텍처의 Thumb 명령어 셋이 발표될 때까지 계속 이어졌다.

3. 4. 특권 레벨

모토로라 68000과 그 후속 시리즈는 유저 모드와 슈퍼바이저 모드의 두 가지 특권 레벨을 구현한다.[42] 사용자 모드에서는 인터럽트 레벨 제어를 제외한 모든 기능에 접근할 수 있다.[42] 슈퍼바이저 모드에서는 모든 기능에 접근할 수 있으며, 인터럽트 발생 시 슈퍼바이저 모드로 전환된다. 슈퍼바이저 비트는 상태 레지스터에 저장되어 사용자 프로그램에서도 볼 수 있다.[42]

슈퍼바이저 레벨은 별도의 스택 포인터를 가진다. 이는 멀티태스킹 시스템에서 작업에 필요한 스택 크기를 줄여주며, 설계자가 인터럽트의 최대 스택 프레임을 고려하여 메모리를 할당할 필요가 없게 해준다.

초기부터 유닉스와 같이 고도화된 메모리 관리 기능과 멀티태스크 기능을 갖춘 OS를 탑재하는 것을 전제로 설계되었다. 사용자 모드에서 동작하는 프로그램의 호환성은 MC68000부터 MC68060까지 바이너리 레벨에서 거의 완전하게 유지되지만, 슈퍼바이저 모드는 세대별로 개선 및 변경이 이루어졌다. 스택 포인터 구현과 동작에 세대 간 차이가 있어, 하드웨어 리소스에 직접 접근하기 위해 슈퍼바이저 모드를 사용하는 애플리케이션은 후속 프로세서에서 정상적으로 동작하지 않을 수 있다.

3. 5. 인터럽트

모토로라 68000은 7단계의 인터럽트 레벨을 가지고 있으며, 레벨 1부터 7까지 우선순위가 있다. 높은 숫자의 인터럽트는 낮은 숫자의 인터럽트에 언제나 끼어들 수 있다. 상태 레지스터의 특권 명령어를 통해 인터럽트 레벨을 설정할 수 있으며, 낮은 우선순위의 인터럽트는 차단할 수 있다. 인터럽트 레벨 7은 NMI(Non-Maskable Interrupt)로, 끼어들거나 차단할 수 없다. 인터럽트 레벨은 상태 레지스터에 저장되며, 유저 레벨 프로그램에서 볼 수 있다.

하드웨어 인터럽트는 인터럽트 우선순위에 따라 인코드되어 3개의 신호로 CPU에 전달된다. 별도의 인터럽트 컨트롤러가 일반적으로 필요하지만, 시스템에 3개 이하의 하드웨어 인터럽트만 있다면 직접 연결하여 인터럽트 신호를 입력받을 수 있다. 하지만 이 경우 소프트웨어가 복잡해진다. 인터럽트 컨트롤러로는 간단한 74LS148 우선순위 인코더부터 MC68901처럼 UART, 타이머, 병렬 I/O 기능이 포함된 다기능 VLSI 주변 칩까지 다양하게 사용할 수 있다.

예외 테이블(인터럽트 벡터 어드레스)은 어드레스 0에서 1023까지 고정되어 있으며, 256개의 32비트 벡터로 표시된다. 첫 번째 벡터는 시동 스택 어드레스이고, 두 번째는 시동 코드 어드레스이다. 벡터 3부터 15는 각종 에러 보고에 사용되며, 버스 에러, 주소 에러, 부정 명령어, 0으로 나누기, CHK/CHK2 벡터, 특권 위반, 예약된 벡터(Line 1010 에뮬레이터, Line 1111 에뮬레이터, 하드웨어 정지지점) 등이 포함된다. 벡터 24부터 실제 인터럽트가 시작되며, 가짜(spurious) 인터럽트, 레벨 1-7 벡터, 15개의 트랩 벡터, 예약된 벡터, 사용자 정의 벡터 순으로 나열된다.

리셋 시에는 최소한 시동 코드 어드레스 벡터에 유효한 어드레스가 있어야 하므로, 시스템은 일반적으로 0번지에 벡터와 부트스트랩 코드를 저장한 비휘발성 메모리(ROM)를 장착한다. 그러나 일반적인 시스템에서는 실행 중인 운영체제가 벡터를 변경할 수 있도록 ROM의 벡터가 RAM의 점프 테이블을 가리키거나 뱅크 스위칭으로 RAM을 ROM으로 대체하기도 한다.

68000은 유저 모드 소프트웨어가 특권 상태를 읽을 수 있는 "MOVE from SR" 명령어 때문에 Popek과 Goldberg의 가상화 요구 조건을 충족하지 못했다. 또한, 메모리 액세스 실패 시 트랩과 복구 기능이 필요했지만, 68000은 버스 에러 예외를 제공했지만 운영체제가 예외를 처리한 후 잘못된 명령어를 다시 시작하기 위한 프로세서 상태를 저장하지 않았다. 이 때문에 가상 메모리 지원이 불가능했다. 일부 회사는 두 개의 68000 칩을 사용하여 가상 메모리가 작동하는 유닉스 워크스테이션을 제작하기도 했다.

이러한 문제점은 MC68010에서 수정되었다. 버스 에러와 어드레스 에러 발생 시 내부 상태를 슈퍼바이저 스택에 밀어 넣어 본래 작업으로 복귀가 가능해졌다. “MOVE from SR” 명령어는 특권 명령어로 변경되었고, 유저 모드 소프트웨어용으로 특권 없는 명령어 "MOVE from CCR"이 추가되어 운영체제에서 트랩과 유저 모드에서 “MOVE from SR” 명령어를 에뮬레이터할 수 있게 되었다.

3. 6. 어드레스 모드

모토로라 68000의 기본적인 어드레스 모드는 다음과 같다.[43]

  • 레지스터 직접 지정 (Register direct)
  • 데이터 레지스터, 예: "D0"
  • 어드레스 레지스터, 예: "A6"
  • 레지스터 간접 지정 (Register indirect)
  • 단순 레지스터, 예: (A0)
  • 후증가 어드레스, 예: (A0)+
  • 전감소 어드레스, 예: -(A0)
  • 16비트 부호 오프셋 어드레스, 예: 16(A0)
  • 8비트 부호 오프셋 인덱스 레지스터 간접 지정, 예: 8(A0, D0) 또는 8(A0, A1)


(A0)+ 과 -(A0)에서 실제로 증가되거나 감소되는 값은 피연산자의 크기에 따라 결정된다. 바이트 액세스시에는 어드레스 레지스터가 1 증가하며 워드일 때는 2, 롱(32비트)일 때는 4 증가한다.[43]

  • 프로그램 카운터 상대 지정 (Program counter relative with displacement)
  • 16비트 부호 오프셋, 예: 16(PC). 이 모드는 위치 독립적인 코드에 매우 유용하다.
  • 인덱스 8비트 부호 오프셋, 예: 8(PC, D2)
  • 절댓 어드레싱 (Absolute memory location)
  • "$4000"같은 수치나 어셈블러가 번역하는 상직적인 이름(symbolic name)
  • 68000 어셈블러는 16진수를 표시하는 기호로 "0x" 보다는 "$"를 사용한다.
  • 이 주소 지정 방식에는 16비트 및 32비트 버전이 있다.
  • 즉시 모드 (Immediate mode)
  • 명령어에 데이터가 포함된다, 예: "#400".
  • 빠른 즉시 모드 (Quick Immediate mode)
  • 오프코드에 데이터 값으로 속도가 빠르다.
  • addq와 subq, 3비트의 부호없는 정수값 (0 ~ 8)
  • moveq, 8비트의 부호 정수값 (-128 ~ 127), 예 moveq.l #0,d0는 clr.l d0 보다 빠르다.


추가로, 상태 레지스터로의 액세스, 이후 모델에서는 다른 특수 레지스터도 같다.

3. 7. 명령어 셋 (세부)

모토로라 68000의 명령어는 대부분 이항 연산으로, 출발지(source)와 목적지(destination)를 가지며 목적지의 내용이 변경된다. 명령어에는 처리 단위를 나타내는 접미사가 붙는데, 8비트 바이트는 ".b", 16비트 워드는 ".w", 32비트 롱 워드는 ".l"을 사용한다.

주요 명령어는 다음과 같다:

  • 산술 연산: ADD, SUB, MULU (부호 없는 곱셈), MULS (부호 있는 곱셈), DIVU, DIVS, NEG (네가티브 덧셈), CMP (뺄셈과 유사하나 결과는 저장하지 않고 상태 비트만 설정).
  • 이진화 십진 연산: ABCD, NBCD, SBCD.
  • 논리 연산: EOR (Exclusive OR), AND, NOT, OR.
  • 시프트 연산:
  • 논리 시프트 (최상위 비트를 0으로 채움): LSL, LSR
  • 산술 시프트 (최상위 비트 부호 확장): ASR, ASL
  • 로테이트 (eXtend 사용 유무): ROXL, ROXR, ROL, ROR
  • 비트 조작: BSET (1로 설정), BCLR (0으로 설정), BTST (SR의 Zero 비트 설정).
  • 멀티프로세서 제어: TAS (test-and-set, 세마포어 실행을 위한 분할 불가능한 버스 연산).
  • 플로우 제어: JMP (점프), JSR (서브루틴으로 점프), BSR (상대 주소 서브루틴으로 점프), RTS (서브루틴에서 복귀), RTE (인터럽트/예외에서 복귀), TRAP (소프트웨어 인터럽트), CHK (조건부 소프트웨어 예외).
  • 분기: Bcc (cc는 16가지 상태 레지스터 테스트 조건 중 하나: 같음, 큼, 작음, 캐리, 조합 및 논리 반전).
  • 감소 분기: DBcc (지정 데이터 레지스터 감소 후 조건이 참이고 결과가 -1이 아니면 분기).


표준 주소 지정 방식은 다음과 같다:

  • 레지스터 직접 주소 지정:
  • 데이터 레지스터 (예: "D0")
  • 주소 레지스터 (예: "A0")
  • 레지스터 간접 주소 지정:
  • 단순 주소 (예: (A0))
  • 사후 증가 (예: (A0)+) - 바이트는 1, 워드는 2, 롱은 4만큼 증가
  • 사전 감소 (예: −(A0)) - 바이트는 1, 워드는 2, 롱은 4만큼 감소
  • 16비트 부호 있는 오프셋 (예: 16(A0))
  • 인덱스 레지스터 및 8비트 부호 있는 오프셋 (예: 8(A0,D0) 또는 8(A0,A1))
  • PC 상대 주소 지정 (변위 포함):
  • 상대 16비트 부호 있는 오프셋 (예: 16(PC)) - 위치 독립적 코드에 유용
  • 인덱스 있는 8비트 부호 있는 오프셋 (예: 8(PC,D2))
  • 절대 메모리 위치:
  • 숫자 (예: "$4000") 또는 기호 이름
  • 16비트 및 32비트 버전 존재
  • 즉시 주소 지정:
  • 명령어에 저장된 데이터 (예: "#400")
  • 빠른 즉시 주소 지정:
  • 3비트 부호 없는 값 또는 8비트 부호 있는 값 (moveq 사용 시) 사용


당시 많은 CPU처럼, 일부 명령어의 사이클 타이밍은 소스 피연산자에 따라 달랐다. 예를 들어 부호 없는 곱셈 명령어는 피연산자에 설정된 비트 수 'n'에 따라 (38+2n) 클럭 사이클이 소요되었다.[43]

4. 사용처

68000은 1980년대 초에는 WICAT 150 [http://www.old-computers.com/museum/computer.asp?c=254], 초기 알파 마이크로시스템즈 컴퓨터, 탠디 TRS-80 Model 16, Fortune 32:16과 같은 고가 시스템에 사용되었다. 휴렛 팩커드의 HP 9000 시리즈 200 시스템, 최초의 아폴로/Domain 시스템, 썬 마이크로시스템즈의 Sun-1, Corvus Concept같은 싱글유저 워크스테이션, DEC의 VAXstation 100, 실리콘 그래픽스 IRIS 1000/1200같은 그래픽 단말기 등에도 사용되었다. 이후 유닉스 시스템들은 더 강력한 68K의 후속 제품을 사용하였다.

1980년대 중반에는 개인용 컴퓨터가정용 컴퓨터에 사용되었는데 애플리사와 매킨토시를 시작으로 코모도어 아미가, 아타리 ST, 샤프 X68000 등에 사용되었다. 68008을 사용한 컴퓨터로는 Sinclair QL과 그 자매품인 ICL One Per Desk이 있다.

68000은 컨트롤러로도 널리 사용되었는데 1981년초 Imagen Imprint-10 레이저 프린터는 68000이 내장된 외부 컨트롤러로 작동되었다. 최초의 HP 레이저젯은 1984년 출시되었는데 8 MHz 68000이 내장된 컨트롤러를 사용하였다. 이와 유사한 68000 기반의 통합 컨트롤러는 1985년 출시된 최초의 포스트스크립트 레이저 프린터인 애플 레이저라이터를 비롯해 많은 레이저 프린터에서 사용되었다. 68000은 1980년대 말까지 레이저 프린터에 폭넓게 사용되었고 1990년대에도 저가형 프린터에는 계속 사용되었다.

기업용이나 가정용 컴퓨터 외에도 68000은 산업용 제어 시스템 영역에서도 널리 사용되었다. 이런 시스템에는 68000과 거기에서 파생된 프로그래머블 로직 컨트롤러(PLC)가 주로 사용되었다.

기술의 발전으로 68000이 컴퓨터 시장에서 단독으로 사용되는 일은 없어졌지만 컨슈머(consumer)와 임베디드 용도에서는 사용이 증가하였다. 비디오 게임 제조사들은 아케이드 게임과 가정용 게임 콘솔에 68000을 주력으로 사용하였다. 아타리가 1983년 출시한 푸드 파이트는 68000을 사용한 첫 번째 아케이드 게임이다. 68000은 1980년대 말에서 1990년대 초까지 아케이드 게임기의 메인 CPU로 사용되었는데 그 예로 세가시스템 16, 캡콤CPS-1CPS-2, SNK의 네오지오 등이 있다. 아웃런같이 다수의 아케이드 시스템에서는 2개이상의 68000을 사용했다. 68000은 90년대까지 아케이드 시스템에 널리 사용되었으며 2000년대 초에도 IGS PGM같은 기기에 사용되었다.

68000은 1980년대 말 ~ 1990년대 초반의 가정용 게임기에 핵심 프로세서로 사용되었는데 세가메가 드라이브메가 CD, 가정용 게임기 버전의 네오지오 등이 있다. 최근의 게임 콘솔에서는 메인 CPU 외에 다른 용도로 사용되는 경우가 있는데 세가 새턴에서는 사운드 제어용으로, 아타리 재규어에서는 그래픽과 사운드 칩 제어용으로 사용된다.

68000 기반의 683XX 마이크로컨트롤러는 네트워크/전화 설비, 텔레비전 셋탑 박스, 실험실과 의료 기기 등 다용도로 널리 사용되었다. MC68302는 Cisco, 3com, Ascend, Marconi, Cyclades등의 통신 기기에서 사용되었으며 드래곤볼 시리즈는 팜 컴퓨팅의 팜(Palm) PDA와 핸드스프링 바이저 시리즈에서 사용되었으나 팜은 점차 ARM 프로세서로 바뀌게 된다. 휴대형 워드프로세서인 알파스마트(AlphaSmart)의 후기 모델도 드래곤볼을 사용했다.

텍사스 인스트루먼트는 TI-89과 TI-92, Voyage 200 같은 고급형 그래픽 계산기에 68000을 사용하였는데 초기 버전은 스태틱 68EC000 코어의 전용 마이크로컨트롤러를 사용하였지만 나중에는 MC68SEC000 프로세서를 사용했다.

아케이드 게임 PCB에 사용된 히타치 68HC000 CPU 2개


4. 1. 한국에서의 사용 예

모토로라 68000은 대한민국에서도 여러 제품에 사용되었다. 샤프에서 개발한 개인용 컴퓨터인 X68000은 68000 프로세서를 탑재하고 독자적인 운영체제를 사용했다. 삼성전자에서 개발한 16비트 개인용 컴퓨터인 SPC-3000에도 68000 프로세서가 사용되었다.

5. 68EC000

68EC000은 모토로라에서 출시한 마이크로프로세서이다. 68000의 저가형 버전으로 임베디드 컨트롤러용으로 설계되었다. 68EC000은 리셋시 8비트나 16비트로 데이터 버스를 바꿀 수 있다.[64][44]

이 프로세서는 8 ~ 16 MHz 속도로 작동하는데 각각 2,100 ~ 4,376 Dhrystone의 성능을 낼 수 있다. EC 시리즈는 부동 소수점 장치가 내장되지 않았으며 보조 프로세서 사용에 필수적인 명령어가 삭제되었기 때문에 MC68881/2 FPU 보조 프로세서를 사용하기가 힘들다.

68EC000는 오디오 기기의 컨트롤러로 널리 사용되었는데 엔소닉(Ensoniq) 전자 악기와 사운드카드에 미디 신시사이저의 한 부분으로 사용되었다.[65][45] 엔소닉 사운드 카드는 CPU를 사용하지 않은 경쟁자들의 제품과 비교해 몇가지 장점이 있었다. CPU는 사용한 카드는 TRS 프로그램을 사용하지 않고도 MPU-401 미디 신서사이즈나 MT-32 에뮬레이션 같은 여러 가지 오디오 작업을 구성, 실행할 수 있었다. 이것은 소프트웨어 호환성이 높고 CPU 사용률이 적으며 컴퓨터의 메모리 사용량도 무시할 수 있었다.

모토로라 68EC000 코어는 모토로라/프리스케일에서 출시한 드래곤볼에 사용되었다.

세가 새턴 게임 콘솔과 90년대 중반 휴렛 팩커드의 레이저젯 프린터용 젯다이렉트(JetDirect) 이더넷 컨트롤러에도 사용되었다.

모토로라 68EC000 컨트롤러

참조

[1] 서적 Microprocessor Architectures and Systems: RISC, CISC, and DSP https://books.google[...] Elsevier 2019-10-12
[2] 서적 The GNU Multiple Precision Arithmetic Library https://gmplib.org/g[...] GNU Project 2022-07-29
[3] 서적 Inside the Apple Macintosh https://books.google[...] Simon & Schuster 2022-07-29
[4] 간행물 Design Philosophy Behind Motorola's MC68000 http://www.easy68k.c[...] 2018-06-19
[5] 서적 Motorola M68000 Family Programmer's Reference Manual http://www.freescale[...] Motorola 2005-08-12
[6] 웹사이트 MC68000: Low Cost 32-Bit Microprocessor (Including HC000, HC001, EC000 and SEC000) https://www.nxp.com/[...] 2021-03-24
[7] 웹사이트 Wallowing in 68K Nostalgia Want to Build a New, 40-year-old Computer? https://www.eejourna[...] 2021-03-24
[8] 학술지 Motorola joins microprocessor race with 8-bit entry McGraw-Hill 1974-03-07
[9] 서적 Servicing Personal Computers https://books.google[...] Heinemann 2022-07-29
[10] 서적 Encyclopedia of Microcomputers – Evolution of Computerized Maintenance Management to Generation of Random Numbers https://books.google[...] Marcel Dekker 2022-07-29
[11] 웹사이트 The Microprocessor (R)evolution https://www.eetimes.[...] 2022-07-29
[12] 서적 Servicing Personal Computers https://books.google[...] Newnes 2022-07-29
[13] 웹사이트 M6800 Microcomputer System Design Data http://www.bitsavers[...] 2023-04-17
[14] 학술지 Microsystems a Microprocessor Architecture for a Changing World: The Motorola 68000 https://ieeexplore.i[...] 2023-04-17
[15] 웹사이트 Chronology of Microprocessors http://processortime[...] Processortimeline.info 2013-09-27
[16] 간행물 DTACK GROUNDED, The Journal of Simple 68000/16081 Systems http://www.easy68k.c[...] 2011-10-31
[17] 웹사이트 Motorola was the rival to beat, and its 68000 its greatest success https://tekdeeps.com[...] 2022-09-13
[18] 서적 Cloud Computing: Business Trends and Technologies https://books.google[...] Wiley 2022-07-29
[19] 웹사이트 FD1094 – Sega Retro http://segaretro.org[...] 2015-10-27
[20] 뉴스 Company Briefs https://select.nytim[...] The New York Times 1985-09-21
[21] 간행물 68HC001 obsoletes 68008 1990-06-20
[22] 간행물 Motorola streamlines 68000 family; "EC" versions of 68000, '020, '030, and '040, plus low-end 68300 chip" 1991-04-17
[23] 보도자료 Motorola reveals MC68SEC000 processor for low power embedded applications http://mot-sps.com/p[...] Motorola 1996-11-18
[24] 학술지 HIPPO Q495 https://www.datashee[...] Motorola 2022-07-29
[25] Usenet posting comp.sys.m68k Usenet posting http://groups.google[...]
[26] 웹사이트 Freescale 150mm Sendai Fab Closure-General Product Discontinuance http://cache.freesca[...] 2014-03-09
[27] 간행물 Multiprotocol processor marries 68000 and RISC http://www.accessmyl[...] 1989-11-01
[28] 간행물 UNIX and the MC68000 https://archive.org/[...] 1986-09
[29] 서적 The Atmel AVR Microcontroller: MEGA and XMEGA in Assembly and C https://books.google[...] Han-Way Huang 2021-11-18
[30] 웹사이트 museum ~ WICAT 150 http://www.old-compu[...] Old-computers.com 2013-09-27
[31] 웹사이트 Acorn User September 1984 – Unicorn: Cheapest Route to Unix https://archive.org/[...] Acorn User 2024-12-06
[32] 웹사이트 Cumana 68008 2nd processor http://chrisacorns.c[...] Chris Whytehead 2024-12-06
[33] 웹사이트 The Arm Story Part 1: From Acorns https://thechiplette[...] The Chip Letter 2024-12-06
[34] 문서 Philips PM3320 250 MS/s Dual Channel Digital Storage Oscilloscope Service Manual, Section 8.6, ordering code 4822 872 05315.
[35] 문서 LeCroy 9400/9400A Digital Oscilloscope Service Manual, Section 1.1.1.3 Microprocessor, August 1990.
[36] 간행물 Retroinspection: Sega Nomad 2009-10-06
[37] 웹사이트 Google Code Archive - Long-term storage for Google Code Project Hosting. https://code.google.[...] 2016-01-15
[38] 웹사이트 openlase-mame/segaybd.c at master - jv4779/openlase-mame https://github.com/j[...] 2016-01-15
[39] 웹사이트 Google Code Archive - Long-term storage for Google Code Project Hosting https://code.google.[...] 2016-01-15
[40] 웹사이트 historic-mess/cischeat.c at master - mamedev/historic-mess https://github.com/m[...] 2016-01-15
[41] 서적 Assembly Language and Systems Programming for the M68000 Family https://books.google[...] Jones and Bartlett Publishers 1997
[42] 서적 M68000 8-/16-/32-Bit Microprocessors User's Manual Ninth Edition https://www.nxp.com/[...] Motorola 1993
[43] 웹사이트 Standard Instruction Execution Times http://oldwww.nvg.nt[...] 2017-08-04
[44] 웹사이트 M68k Frequently Asked Questions (FAQ), comp.sys.m68k http://www.faqs.org/[...] 1996-01-06
[45] 웹사이트 Soundscape Elite Specs. from Fax Sheet http://groups.google[...] 1995-04-25
[46] 웹사이트 DCL、東京・多摩に新工場建設――ワークステーション増産、カスタムLSIも。 https://www.nikkei.c[...] 2023-10-18
[47] 서적 16ビットマイクロプロセッサ 丸善株式会社 1981-06-30
[48] 뉴스 "68HC001 obsoletes 68008." http://www.highbeam.[...] Microprocessor Report 1990-06-20
[49] 뉴스 "Motorola streamlines 68000 family; "EC" versions of 68000, '020, '030, and '040, plus low-end 68300 chip." http://www.highbeam.[...] Microprocessor Report 1991-04-17
[50] 웹사이트 "Motorola reveals MC68SEC000 processor for low power embedded applications" https://web.archive.[...] Motorola press release 1996-11-18
[51] 웹사이트 comp.sys.m68k Usenet posting https://groups.googl[...] 1995-05-16
[52] 웹사이트 【連載】セガハードストーリー 第3回“時代が求めた16ビット” 『メガドライブ』 https://sega.jp/hist[...] セガハード大百科 2017-10-27
[53] 서적 M68000マイクロプロセッサユーザーズ・マニュアル CQ出版 1990-05-10
[54] 문서
[55] 문서
[56] 웹사이트 68000と挿し替えて使えるCPUアクセラレータ「Buffy Acellerator」 https://pc.watch.imp[...] 2021-02-08
[57] 서적 Microprocessor Architectures and Systems: RISC, CISC, and DSP https://books.google[...] 1995
[58] 간행물 M68000 Family Programmer's Reference Manual http://www.freescale[...] Motorola Literature Distribution, Phonenix, AZ (1992).
[59] 뉴스 "Company Briefs" http://select.nytime[...] The New York Times 1985-09-21
[60] 뉴스 "Motorola streamlines 68000 family; "EC" versions of 68000, '020, '030, and '040, plus low-end 68300 chip." https://archive.toda[...] Microprocessor Report 1991-04-17
[61] 웹사이트 "Motorola reveals MC68SEC000 processor for low power embedded applications" https://web.archive.[...] Motorola press release 1996-11-18
[62] 웹사이트 comp.sys.m68k Usenet posting http://groups.google[...] 1995-05-16
[63] 간행물 "Multiprotocol processor marries 68000 and RISC." http://www.accessmyl[...] ESD: The Electronic System Design Magazine 1989-11-01
[64] 웹사이트 M68k Frequently Asked Questions (FAQ) http://archive.comla[...] 1994-10-19
[65] 웹사이트 Soundscape Elite Specs. from Fax Sheet http://groups.google[...] 1995-04-25



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com